
#pragma once

class TcpPortTestAcceptActorMgr;
class TcpPortTestPassiveConnectionActorMgr;
class TcpPortTestActiveConnectionActorMgr;

class TcpPortTestConfigure : public ConfigureBase
{
public:
    TcpPortTestConfigure();
    virtual ~TcpPortTestConfigure();

    virtual retT init(const std::string _configFileName=DEFAULT_CONFIG_FILE_NAME);
    std::string listeningIP_;
    unsigned short listeningPort_;
	std::string serverIP_;
	unsigned short serverPort_;
	bool doConnect_;
	int numToEcho_;
    std::size_t dataThreadSize_;
};

class TcpPortTestApp : public AppBase
{
public:
	TcpPortTestApp(ConfigureBase* _pConfigure = new ConfigureBase());
	virtual ~TcpPortTestApp();

	virtual retT init();

protected:
    boost::shared_ptr<TcpPortTestAcceptActorMgr> pTcpPortTestAcceptActorMgr_;
    boost::shared_ptr<TcpPortTestPassiveConnectionActorMgr> pTcpPortTestPassiveConnectionActorMgr_;
	boost::shared_ptr<TcpPortTestActiveConnectionActorMgr> pTcpPortTestActiveConnectionActorMgr_;
};
